package com.podium.web.log.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Getter;
import lombok.Setter;
import org.springframework.format.annotation.DateTimeFormat;

import java.util.Date;

/**
 * @author 邵文泽
 * @description 登录日志
 * @date 2025-05-13 08:46:11
 */
@Getter
@Setter
@TableName("sys_login_log")
public class SysLoginLog {


    /**
     * 主键
     */
    @TableId(value = "id", type = IdType.INPUT )
    private String id;


    /**
     * 用户ID
     */
    @TableField("user_id")
    private Long userId;


    /**
     * 登录账号
     */
    @TableField("username")
    private String username;

    /**
     * 用户名
     */
    @TableField("nick_name")
    private String nickName;

    /**
     * 登录时间
     */
    @TableField("login_time")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date loginTime;


    /**
     * 登录IP
     */
    @TableField("login_ip")
    private String loginIp;


    /**
     * 登录地理位置
     */
    @TableField("login_location")
    private String loginLocation;


    /**
     * 设备信息（浏览器/操作系统）
     */
    @TableField("device_info")
    private String deviceInfo;


    /**
     * 登录状态: 0-成功, 1-失败
     */
    @TableField("login_status")
    private Long loginStatus;


    /**
     * 失败原因
     */
    @TableField("failure_reason")
    private String failureReason;


    /**
     * 会话ID
     */
    @TableField("token")
    private String token;


    /**
     * 请求参数
     */
    @TableField("request_param")
    private String requestParam;


    /**
     * User-Agent
     */
    @TableField("user_agent")
    private String userAgent;


    /**
     * 登出时间
     */
    @TableField("logout_time")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date logoutTime;


    /**
     * 登录渠道: 0-账号密码, 1-OAuth, 2-短信等
     */
    @TableField("login_channel")
    private Long loginChannel;

}